package chapter02.part04;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;

/**
 * 创建文件和目录
 * 
 * @author insight
 * @since 2021/8/18
 */
public class CreateFileTest {
    public static void main(String[] args) throws IOException {
        // 创建目录 除了最后一部分之外 其他目录必须已存在 重复会抛异常
        Files.createDirectory(Paths.get(
                "chapter02-io/src/main/resources/newDir"));
        // 创建多个不存在的目录
        Files.createDirectories(Paths.get(
                "chapter02-io/src/main/resources/newDir2/test"));
        
        // 创建空文件 重复会抛异常
        // 创建和检查都是原子操作
        Files.createFile(Paths.get(
                "chapter02-io/src/main/resources/newDir/test.txt"));
        
        // 创建临时文件和目录
        // prefix suffix 可以为 null
        // 不指定则保存到系统默认的临时文件夹
        System.out.println(Files.createTempFile(null, ".txt"));
        System.out.println(Files.createTempFile(Paths.get(
                "chapter02-io/src/main/resources"),
                null, ".txt"));
        // 创建时可以指定属性权限
        // 需要根据文件系统来设置 win 有点麻烦
        // 这里以读取属性为示例
        Path dir = Paths.get(
                "chapter02-io/src/main/resources");
        /*Set<PosixFilePermission> fps =
                PosixFilePermissions.fromString("rw-rw-rw-");
        Files.createTempFile(dir,
                null, ".txt",
                PosixFilePermissions.asFileAttribute(fps));*/
        BasicFileAttributes attr =
                Files.readAttributes(dir.resolve("test.txt"),
                        BasicFileAttributes.class);
        System.out.println(attr.creationTime());
    }
}